package ejercicio3;

public abstract class Personaje {
	
	public double vida;
	public double destreza;
	private EstrategiaDeLucha estrategiaDeLucha;
	
	
	
	public Personaje(double vida, double destreza) {
		super();
		this.vida = vida*10;
		this.destreza = destreza;
	}
	
	public double getVida() {
		return vida;
	}
	public void setVida(double vida) {
		this.vida = vida;
	}
	public double getDestreza() {
		return destreza;
	}
	public void setDestreza(double destreza) {
		this.destreza = destreza;
	}

	
	public EstrategiaDeLucha getEstrategiaDeLucha() {
		return estrategiaDeLucha;
	}

	public void setEstrategiaDeLucha(EstrategiaDeLucha estrategiaDeLucha) {
		this.estrategiaDeLucha = estrategiaDeLucha;
	}
	
	private boolean tieneVida ()
	{
		return getVida()>0;
	}
	
public final void luchar (Personaje otroPersonaje )
{
	while (tieneVida() && otroPersonaje.tieneVida())
	{
		// Para este personaje
		double ataque = otroPersonaje.getAtaque();
		double defensa = this.getDefensa();
		setVida(getVida()-(ataque-defensa));
		
		// Salida a consola
		System.out.println(this + " pierde " +( (ataque-defensa)) + " vida "+ getVida());
		
		// Para el otro personaje
		ataque = getAtaque();
		defensa = otroPersonaje.getDefensa();
		otroPersonaje.setVida(getVida()-(ataque-defensa));
		
		//Salida a consola
		System.out.println(otroPersonaje + " pierde " +( (ataque-defensa)) 
				+ " vida "+ otroPersonaje.getVida());
	}		
}
	
	public abstract double getAtaque ();
	public abstract double getDefensa ();
	
	public abstract void caminar ();
	
	public String toString()
	{
		return this.getClass().getName().substring(this.getClass().getName().indexOf("@")+1,this.getClass().getName().length());
		
	}
	
	
}
